package vebugger.templates; import java.io.File; import vebugger.VebuggerTemplate; public class FileTemplate extends VebuggerTemplate { @Override public Class<?> getType() { return File.class; } @Override public void render(StringBuilder sb, Object obj) { File file = (File) obj; sb.append("<style>"); sb.append("table.java-io-File {border-collapse: collapse; font-size: 12px;}"); sb.append("table.java-io-File > * > tr > * {padding: 4px;}"); sb.append("table.java-io-File > thead > tr {border-bottom: 2px solid black;}"); sb.append("table.java-io-File > * > tr > *:first-child:not(:last-child) {border-right: 1px dotted silver;}"); sb.append("table.java-io-File > tbody > tr > * {border-bottom: 1px dotted silver;}"); sb.append("table.java-io-File > tbody > tr:last-child > * {border-bottom: none;}"); sb.append("</style>"); sb.append("<pre>").append(file.toString()).append("</pre>"); sb.append("<table class=\"java-io-File\"><thead><tr><th>Property</th><th>Value</th></tr></thead></tbody>"); sb.append("<tr><td><code>isAbsolute()</code></td><td><code>").append(file.isAbsolute()) .append("</code></td></tr>"); if (file.exists()) { sb.append("<tr><td><code>isFile()</code></td><td><code>").append(file.isFile()).append("</code></td></tr>"); sb.append("<tr><td><code>isDirectory()</code></td><td><code>").append(file.isDirectory()) .append("</code></td></tr>"); sb.append("<tr><td><code>isHidden()</code></td><td><code>").append(file.isHidden()) .append("</code></td></tr>"); sb.append("<tr><td>Permissions</td><td><pre>"); boolean noPermissions = true; if (file.canRead()) { sb.append("readable\n"); noPermissions = false; } if (file.canWrite()) { sb.append("writable\n"); noPermissions = false; } if (file.canExecute()) { sb.append("executable"); noPermissions = false; } if (noPermissions) { sb.append("<none>"); } sb.append("</pre></td></tr>"); } else { sb.append("<tr><td colspan=\"2\">(file does not exist)</td></tr>"); } sb.append("</tbody></table>"); } }